#ifndef HPLC_ZKYS_PUMP_PROTOCOL_H
#define HPLC_ZKYS_PUMP_PROTOCOL_H

#include "common/hplczkysprotocolcommon.h"
#include "common/hplczkyssendcommonsystempacket.h"
#include "hplczkyspumpparsepacket.h"
#include "hplczkyspumpparsesystempacket.h"
#include "hplczkyspumpsendpacket.h"
#include "hplczkyspumpsendsystempacket.h"
#include "modulehplcpumpdefine.h"

namespace hplc
{
namespace zkys
{

class HplcZkysPumpProtocolData;
class HplcZkysPumpProtocol : public HplcZkysProtocolCommon
{
    Q_OBJECT
public:
    HplcZkysPumpProtocol(PumpParam &param, QObject *parent = nullptr);
    virtual ~HplcZkysPumpProtocol() override;

    virtual bool setProtocolCmd(int id, QVariant &var) override;
    virtual bool getProtocolCmd(int id, QVariant &var) override;

    HplcZkysPumpParsePacket *getPumpParser();
    HplcZkysPumpParseSystemPacket *getPumpSystemParser();

    HplcZkysPumpSendPacket *getPumpSender();
    HplcZkysPumpSendSystemPacket *getPumpSystemSender();

    HplcZkysSendCommonPacket *getCommonSender();
    HplcZkysSendCommonSystemPacket *getCommonSystemSender();

protected:
    virtual void setModel(quint8 model) override;

    HplcZkysPumpProtocol(HplcZkysPumpProtocolData &data, PumpParam &param, QObject *parent = nullptr);

private:
    hplc::PumpParam			*m_param = nullptr;
};

} // zkys
} // hplc

#endif // HPLC_ZKYS_DETECTOR_PROTOCOL_H
